package sip_core

/*
通知命令定义如下:
	<elementname="Notify">
		<complexType>
			<sequence>
				<! -- 通知请求的命令序列如下-->
			</sequence>
		</complexType>
	</element>
*/

//Keepalive 状态信息报送(心跳包)
type KeepaliveNotify struct {
	//CmdType = Keepalive
	*SipMsgXML
	//是否正常工作(必选)
	Status ResultType `xml:"Status"`
	//故障设备列表
	Info struct {
		DeviceID DeviceIDType `xml:"DeviceID"`
	}
}

type AlarmInfo struct {
	//报警类型。
	//报警方式为2时,不携带 AlarmType为默认的报警设备报警,携带 AlarmType取值及对应报警类型如下:1-视频丢失报警;2-设备防拆报警;3-存储设备磁盘满报警;4-设备高温报警;5-设备低温报警。
	//报警方式为5时,取值如下:1-人工视频报警;2-运动目标检测报警;3-遗留物检测报警;4-物体移除检测报警;5-绊线检测报警;6-入侵检测报警;7-逆行检测报警;8-徘徊检测报警;9-流量统计报警;10-密度检测报警;11-视频异常检测报警;12-快速移动报警。
	//报警方式为6时,取值如下:1-存储设备磁盘故障报警;2-存储设备风扇故障报警。
	//报警方式为8时,取值如下:1-安全帽;2-安全带;3-围栏;4-吊车
	AlarmType int64 `xml:"AlarmType"`
	//警类型扩展参数。在入侵检测报警时可携带<EventType>事件类型</EvenType>
	AlarmTypeParam struct {
		//事件类型取值:1-进入区域;2-离开区域。
		EventType int64 `xml:"EventType"`
		//报警类型为1时,取值如下:1-未佩戴安全帽;2-未系下颌带
		//报警类型为1时,取值如下:1-未佩戴安全带;2-安全带低挂高用;3-安全带挂瓷瓶
		//报警类型为1时,取值如下:1-上跨越围栏;2-下跨越围栏;3-移开穿越围栏
		//报警类型为1时,取值如下:1-吊臂下有人
		AlarmEventType int64 `xml:"AlarmEventType"`
		AlarmArea      struct {
			PointNum string `xml:"PointNum,attr"`
			Point1_X string `xml:"Point1_X,attr"`
			Point1_Y string `xml:"Point1_Y,attr"`
			Point2_X string `xml:"Point2_X,attr"`
			Point2_Y string `xml:"Point2_Y,attr"`
		} `xml:"AlarmArea"`
		Confidence string `xml:"Confidence"` //可信度
	} `xml:"AlarmTypeParam"`
}

//AlarmNotify 报警通知
type AlarmNotify struct {
	//CmdType = Alarm
	*SipMsgXML
	//报警级别(必选),1为一级警情,2为二级警情,3为三级警情,4为四级警情
	AlarmPriority int64 `xml:"AlarmPriority"`
	//报警方式(必选),取值1为电话报警,2为设备报警,3为短信报警,4为 GPS报警,5为视频报警,6为设备故障报警,7其他报警,8变电站现场违章作业报警
	AlarmMethod int64 `xml:"AlarmMethod"`
	//报警时间(必选)
	AlarmTime string `xml:"AlarmTime"`
	//报警内容描述(可选)
	AlarmDescription string `xml:"AlarmDescription"`
	//经度(可选)
	Longitude string `xml:"Longitude"`
	//纬度(可选)
	Latitude string `xml:"Latitude"`
	//报警图片信息(可选)
	AlramFile struct {
		Url      string `xml:"Url,attr"`      //违章图片的下载地址
		FileSize string `xml:"FileSize,attr"` //文件大小,单位:字节
		Verfiy   string `xml:"Verfiy,attr"`
	} `xml:"AlramFile"`
	//扩展Info项携带报警类型、报警类型参数字段
	AlarmInfos []AlarmInfo `xml:"Info"`
	//扩展信息,可多项
	Info string `xml:"AlarmInfo"`
}

//MediaStatusNotify 媒体通知
type MediaStatusNotify struct {
	//CmdType = MediaStatus
	*SipMsgXML
	//通知事件类型(必选),取值“121"表示历史媒体文件发送结束
	NotifyType string `xml:"NotifyType"`
}

//BroadcastNotify 语音广播通知
type BroadcastNotify struct {
	//CmdType = Broadcast
	*SipMsgXML
	//语音输入设备的设备编码(必选)
	SourceID string `xml:"SourceID"`
	// 语音输出设备的设备编码(必选)
	TargetID string `xml:"TargetID"`
}

//MobilePositionNotify 移动设备位置数据通知
type MobilePositionNotify struct {
	//CmdType = MobilePosition
	*SipMsgXML
	// 产生通知时间(必选)
	Time string `xml:"Time"`
	//经度(必选)
	Longitude string `xml:"Longitude"`
	//纬度(必选)
	Latitude string `xml:"Latitude"`
	//速度,单位:km/h(可选)
	Speed string `xml:"Speed"`
	//方向,取值为当前摄像头方向与正北方的顺时针夹角,取值范围0°~360°,单位:(°)(可选)
	Direction string `xml:"Direction"`
	// 海拔高度,单位:m(可选)
	Altitude string `xml:"Altitude"`
}
